///<reference path="../typings/tsd.d.ts" />
$(function() {

    //下面两项通过外层的上，左来传入
    var querystring = window.location.search;
    let nodeidx = (querystring.match(/node=(\w+)/))[1];
    let ZZJGNODE: TreeNode;
    let INFO: NodeOptions = window.NODE[nodeidx];
    let addFrameTab = (title, url) => {
        window.parent.addFrameTab(title, url);
    }
    $("#divTitle").text(INFO.title);
    //设置表格大小，以便锁定
    $(window).resize(function() {
        $("#ttWrap").css({
            height: ($(window).innerHeight() - $("#ttWrap").offset().top - INFO.queryBottom) + 'px',
            width: (($(window).innerWidth() - 30) + 'px')
        });
    }).resize();

    //根据传入组织机构的id,更新界面
    let query = (ZZJGID) => {
        $.ajax(INFO.queryUrl, { type: 'POST', data: { zzjg: ZZJGID }, dataType: 'json' })
            .done(function(list) {
                $("#tt").autoTable($.extend({ data: list }, INFO.tblOpt));
            });
    }
    //有消息传入时，直接去外层读到当前节点。
    function init() {
        ZZJGNODE = parent.CurTreeNode;
        query(ZZJGNODE.ID);
    }
    $(window).on("message", init);
    init();

    //工具栏按钮事件
    let getSelectedRow = () => {
        let $sel = $("#tt").find(".autoselected");
        if ($sel.length == 0) {
            $.auto.alert("提示", "请先在数据表格中选择操作的行！");
            return false;
        } else {
            let ret = {};
            _.each(INFO.tblOpt.keydataOnRow, function(key) {
                ret[key] = $sel.data(key.toLowerCase());
            });
            return ret;
        }
    }
    //新增
    $("#btnAdd").click(() => {
        if (nodeidx == "zhtj") {
            addFrameTab("新增", `getJspSipcAddEdit.action?xmid=&node=${nodeidx}`);
        } else {
            addFrameTab("新增", `getJspSipcAddEdit.action?id=&node=${nodeidx}`);
        }
    })
    //编辑
    $("#btnEdit").click(() => {
        let keyData = getSelectedRow();
        if (keyData) {
            if (nodeidx == "zhtj") {
                addFrameTab("编辑", `getJspSipcAddEdit.action?xmid=${keyData["XMID"]}&node=${nodeidx}`);
            }
            else {
                addFrameTab("编辑", `getJspSipcAddEdit.action?id=${keyData["ID"]}&node=${nodeidx}`);
            }
        }
    })
    //删除
    $("#btnDel").click(() => {
        let keyData = getSelectedRow();
        if (keyData) {
            let hint = (_.template(INFO.deleteHint))(keyData);
            $.auto.confirm("提示", hint, function() {
                $.ajax(INFO.deleteUrl, { type: 'POST', data: { xmid: keyData["XMID"] }, dataType: 'json' })
                    .done(function(ret) {
                        if (ret == "error") {
                            $.auto.alert("提示", "删除失败！")
                        } else {
                            $.auto.alert("提示", "删除成功！")
                            init();
                        }
                    });
            })
        }
    })
    //基本信息  这个显示什么内容。
    $("#btnDetails").click(() => {
        let keyData = getSelectedRow();
        if (keyData) {

        }
    });
    //详细信息  这个显示项目节点下的文件夹。
    $("#btnFolder").click(() => {
        let keyData = getSelectedRow();
        if (keyData) {
            addFrameTab("详细信息", `SIPCFolder.html?id=${keyData["XMID"]}&node=${nodeidx}`);
        }
    });
    //精确查询
    $("#btnJQCZ").click(() => {
        //仍然用autoform来输出表格，只是需要隐藏一下两个按钮
        $("#jqczForm").autoForm(INFO.jqczOpt);
        $("#jqczWrap").dialog({
            title: "精确查询",
            width: "500px"
        })
    });
    $("#btnJqczSearch").click(() => {
        //精确查询时，循环每一个条件，拼接成一个条件，然后传入filter
        //建议不要加组织机构的Id. 因为只从左边的树中的项目去搜索
        let condition = {};
        let $form = $("#jqczForm");
        _.each(INFO.jqczOpt.fields, function(item) {
            condition[item.field] = $form.find(`[name=${item.field}]`).val();
        });
        //取出$("#tt")的参数，然后增加一个过滤条件的参数
        let opt: AutoTableOptions = <AutoTableOptions><any>($("#tt").autoTable("option")._opt);
        let filter: (row) => boolean = function(row) {
            //如果row对应的字段，包含condition的值，那么则显示否则过滤掉
            let flag = true;
            _.each(INFO.jqczOpt.fields, function(item) {
                if (row[item.field] && (<string>row[item.field]).indexOf(condition[item.field]) == -1) {
                    flag = false;
                }
            });
            return flag;
        }
        opt.filter = filter;
        opt.pageNumber = 1;

        $("#tt").autoTable(opt);

    });
    $("#btnJqczClose").click(() => {
        $("#jqczWrap").dialog("close");
    });
});


